package com.hc.programming.tree;

import java.util.Arrays;

/**
 * 给定一个二叉树 root ，返回其最大深度。
 * 二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。
 * <p>
 * 示例 1：
 * 输入：root = [3,9,20,null,null,15,7]
 * 输出：3
 * 示例 2：
 * 输入：root = [1,null,2]
 * 输出：2
 * <p>
 * 提示：
 * 树中节点的数量在 [0, 10^4] 区间内。
 * -100 <= Node.val <= 100
 *
 * @author huangchao E-mail:fengquan8866@163.com
 * @version 创建时间：2024/9/12 22:40
 */
public class 二叉树的最大深度 {
    public static void main(String[] args) {
        Integer[] arr = new Integer[]{3, 9, 20, null, null, 15, 7};
        TreeNode tree = TreeNode.tree(arr);
        System.out.println(Arrays.toString(arr) + "=3,--" + maxDepth(tree));
        arr = new Integer[]{1, null, 2};
        tree = TreeNode.tree(arr);
        System.out.println(Arrays.toString(arr) + "=2,--" + maxDepth(tree));
    }

    public static int maxDepth(TreeNode root) {
        return 后续遍历(root);
    }

    private static int 后续遍历(TreeNode root) {
        if (root == null) return 0;
        return Math.max(后续遍历(root.left), 后续遍历(root.right)) + 1;
    }
}
